package com.xiaolin.oa.generator;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

/**
 * @author xiaolin
 * @description 描述
 * @since 2024/7/12
 */
public class CodeGenerateTest {
    // 数据库连接，请改成自己的数据库
    public static final String DATABASE_URL = "jdbc:mysql://localhost:3306/oa_system?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false";
    // 数据库用户名，请改成自己的数据库用户名
    public static final String USERNAME = "root";
    // 数据库密码，请改成自己的数据库密码
    public static final String PASSWORD = "root";
    // java文件生成目录
    public static final String JAVA_OUTPUT_PATH = "D:\\generator\\code-generator";
    // Mapper的xml文件生成目录
    public static final String MAPPER_XML_OUTPUT_PATH = "D:\\generator\\code-generator\\mapper";

    public static void main(String[] args) {
        FastAutoGenerator.create(DATABASE_URL, USERNAME, PASSWORD)
                .globalConfig(builder -> {
                    builder.author("xiaolin") // 设置作者
                            //.enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir(JAVA_OUTPUT_PATH); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.xiaolin") // 设置父包名
                            .moduleName("oa") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, MAPPER_XML_OUTPUT_PATH)); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("sys_role_org") // 设置需要生成的表名
                            .entityBuilder().enableLombok() // 开启 lombok注解
                            .serviceBuilder().formatServiceFileName("%sService"); // 除去 Service 接口前缀 I; // 设置过滤表前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();
    }
}
